home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 1.0 for Developers / QuickTime 1.0 for Developers.iso / Programming Stuff / Interfaces / Oldstyle C Interfaces / Movies.h < prev    next >
C/C++ Source or Header  |  1991-09-06  |  29KB  |  967 lines

  1. /*
  2.     File:        Movies.h
  3.     Copyright:    © 1991 by Apple Computer, Inc., all rights reserved.
  4. */
  5.  
  6. #ifndef _Movies_
  7. #define _Movies_
  8.  
  9.  
  10. #include <Aliases.h>
  11. #include <QuickDraw.h>
  12.  
  13. #include "Components.h"
  14. #include "TimeBases.h"
  15. #include "Matrix.h"
  16.  
  17. #ifndef kFix1
  18.     #define kFix1            (0x00010000)
  19. #endif
  20.  
  21. #define MOVIE_FILE_ID    'MooV'
  22.  
  23. #define DoTheRightThing 0L
  24.  
  25.  
  26.     typedef struct privateMovieRecord *Movie;
  27.     typedef struct privateTrackRecord *Track;
  28.     typedef struct privateMediaRecord *Media;
  29.     typedef struct privateUserDataRecord *UserData;
  30.     
  31.     typedef struct privateTrackEditStateRecord *TrackEditState;
  32.     typedef struct privateMovieEditStateRecord *MovieEditState;
  33.  
  34.     
  35.     typedef struct PriorityType {
  36.         unsigned short        level;            /* priority level */
  37.         unsigned short        percent;        /* percent to allocate at the priority level */
  38.         } PriorityType;
  39.     
  40.     struct SampleDescription {
  41.         long    size;
  42.         long    type;
  43.         long    resvd1;
  44.         short    resvdA;
  45.         short    dataRefBlobId;
  46.     };
  47.     
  48.     typedef struct SampleDescription SampleDescription;
  49.     typedef SampleDescription *SampleDescriptionPtr, **SampleDescriptionHandle;
  50.     
  51.  
  52. #define gestaltQuickTime 'qtim'
  53.  
  54. struct SoundDescription {
  55.     long    descSize;            /* total size of SoundDescription including extra data */
  56.     long    dataFormat;            /*  */
  57.     long    resvd1;                /* reserved for apple use */
  58.     long    resvd2;                /* reserved for apple use */
  59.     short    version;            /* which version is this data */
  60.     short    revlevel;            /* what version of that codec did this */
  61.     long    vendor;                /* whose  codec compressed this data */
  62.     short    numChannels;        /* number of channels of sound */
  63.     short    sampleSize;            /* number of bits per sample */
  64.     short    compressionID;        /* sound compression used, 0 if none */
  65.     short    packetSize;            /* packet size for compression, 0 if no compression */
  66.     Fixed    sampleRate;            /* sample rate sound is captured at */
  67. };
  68.  
  69. typedef struct SoundDescription SoundDescription;
  70. typedef SoundDescription *SoundDescriptionPtr, **SoundDescriptionHandle;
  71.  
  72. /* progress messages */
  73.  
  74. enum {
  75.     movieProgressOpen = 0,
  76.     movieProgressUpdatePercent = 1,
  77.     movieProgressClose = 2
  78. };
  79.  
  80. /* progress operations */
  81. enum {
  82.     progressOpFlatten = 1,
  83.     progressOpInsertTrackSegment,
  84.     progressOpInsertMovieSegment,
  85.     progressOpPaste,
  86.     progressOpAddMovieSelection,
  87.     progressOpCopy,
  88.     progressOpCut,
  89.     progressOpLoadMovieIntoRam,
  90.     progressOpLoadTrackIntoRam,
  91.     progressOpLoadMediaIntoRam
  92. };
  93.  
  94. #if THINK_C==1
  95.     #define MovieProgressProcPtr ProcPtr
  96. #else
  97.     typedef pascal Boolean (*MovieProgressProcPtr)(Movie m, short message, short whatOperation, Fixed percentDone, long refcon);        
  98. #endif
  99.  
  100. typedef ComponentInstance MediaHandler,DataHandler;
  101. typedef ComponentResult HandlerError;
  102.  
  103.  
  104. #ifdef __cplusplus
  105. extern "C" {
  106. #endif __cplusplus
  107.  
  108. /****************************************
  109. *                                        *
  110. *               W  A  R  H  O  L             *
  111. *                                        *
  112. ****************************************/
  113.  
  114. /*************************
  115. * Initialization Routines 
  116. **************************/
  117.  
  118. pascal OSErr EnterMovies( void )
  119.         = {0x303c,0x1,0xaaaa};
  120. pascal void ExitMovies( void )
  121.         = {0x303c,0x2,0xaaaa};
  122.  
  123. /*************************
  124. * Error Routines 
  125. **************************/
  126.  
  127.  
  128.     #if THINK_C==1
  129.         #define ErrorProcPtr ProcPtr
  130.     #else
  131.         typedef pascal void (*ErrorProcPtr)(OSErr theErr, long refcon);        
  132.     #endif
  133.     
  134.  
  135.  
  136. pascal OSErr GetMoviesError( void )
  137.         = {0x303c,0x3,0xaaaa};
  138. pascal void ClearMoviesStickyError( void )
  139.         = {0x303c,0xde,0xaaaa};
  140. pascal OSErr GetMoviesStickyError( void )
  141.         = {0x303c,0x4,0xaaaa};
  142.  
  143. pascal void SetMoviesErrorProc( ErrorProcPtr errProc, long refcon )
  144.         = {0x303c,0xef,0xaaaa};
  145.  
  146. /*************************
  147. * Idle Routines 
  148. **************************/
  149.  
  150. pascal void MoviesTask( Movie m, long maxMilliSecToUse )
  151.         = {0x303c,0x5,0xaaaa};
  152. pascal OSErr PrerollMovie( Movie m, TimeValue time, Fixed Rate )
  153.         = {0x303c,0x6,0xaaaa};
  154.  
  155. pascal OSErr LoadMovieIntoRam( Movie m, TimeValue time, TimeValue duration, long flags )
  156.         = {0x303c,0x7,0xaaaa};
  157. pascal OSErr LoadTrackIntoRam( Track t, TimeValue time, TimeValue duration, long flags )
  158.         = {0x303c,0x16e,0xaaaa};
  159. pascal OSErr LoadMediaIntoRam( Media m, TimeValue time, TimeValue duration, long flags )
  160.         = {0x303c,0x8,0xaaaa};
  161.  
  162. pascal void SetMovieActive( Movie m, Boolean active )
  163.         = {0x303c,0x9,0xaaaa};
  164. pascal Boolean GetMovieActive( Movie m )
  165.         = {0x303c,0xa,0xaaaa};
  166.  
  167. /*************************
  168. * calls for playing movies, previews, posters
  169. **************************/
  170.  
  171. pascal void StartMovie( Movie m )
  172.         = {0x303c,0xb,0xaaaa};
  173. pascal void StopMovie( Movie m )
  174.         = {0x303c,0xc,0xaaaa};
  175. pascal void GotoBeginningOfMovie( Movie m )
  176.         = {0x303c,0xd,0xaaaa};
  177. pascal void GotoEndOfMovie( Movie m )
  178.         = {0x303c,0xe,0xaaaa};
  179. pascal Boolean IsMovieDone( Movie m )
  180.         = {0x303c,0xdd,0xaaaa};
  181.  
  182. pascal Boolean GetMoviePreviewMode( Movie m )
  183.         = {0x303c,0xf,0xaaaa};
  184. pascal void SetMoviePreviewMode( Movie m, Boolean usePreview )
  185.         = {0x303c,0x10,0xaaaa};
  186. pascal void ShowMoviePoster( Movie m )
  187.         = {0x303c,0x11,0xaaaa};
  188.  
  189. #if THINK_C==1
  190.     #define MoviePreviewCallOutProc ProcPtr
  191. #else
  192.     typedef pascal Boolean (*MoviePreviewCallOutProc)(long refcon);        
  193. #endif
  194.  
  195. pascal void PlayMoviePreview( Movie m, MoviePreviewCallOutProc callOutProc, long refcon )
  196.         = {0x303c,0xf2,0xaaaa};
  197.  
  198. /*************************
  199. * calls for controlling movies & tracks which are playing
  200. **************************/
  201.  
  202. pascal TimeBase GetMovieTimeBase( Movie m )
  203.         = {0x303c,0x12,0xaaaa};
  204.  
  205. pascal void SetMovieMasterTimeBase( Movie m, TimeBase tb,
  206.         const TimeRecord *slaveZero)
  207.         = {0x303c,0x167,0xaaaa};
  208. pascal void SetMovieMasterClock( Movie m, Component clockMeister,
  209.         const TimeRecord *slaveZero )
  210.         = {0x303c,0x168,0xaaaa};
  211.  
  212. pascal void GetMoviePriority( Movie m, PriorityType *priority )
  213.         = {0x303c,0x13,0xaaaa};
  214. pascal void SetMoviePriority( Movie m, const PriorityType *priority )
  215.         = {0x303c,0x14,0xaaaa};
  216.  
  217. pascal void GetMovieGWorld( Movie m, CGrafPtr *port, GDHandle *gdh )
  218.         = {0x303c,0x15,0xaaaa};
  219. pascal void SetMovieGWorld( Movie m, CGrafPtr port, GDHandle gdh )
  220.         = {0x303c,0x16,0xaaaa};
  221.  
  222. pascal PicHandle GetMoviePict ( Movie m, TimeValue time )
  223.         = {0x303c,0x1d,0xaaaa};
  224. pascal PicHandle GetTrackPict ( Track t, TimeValue time )
  225.         = {0x303c,0x1e,0xaaaa};
  226.  
  227. pascal PicHandle GetMoviePosterPict ( Movie m )
  228.         = {0x303c,0xf7,0xaaaa};
  229.  
  230. pascal OSErr UpdateMovie( Movie m )
  231.         = {0x303c,0x1f,0xaaaa};    /* called between Begin & EndUpdate */
  232.  
  233.  
  234. /**** spatial movie routines ****/
  235.  
  236. pascal void GetMovieBox( Movie m, Rect *boxRect )
  237.         = {0x303c,0xf9,0xaaaa};
  238. pascal void SetMovieBox( Movie m, const Rect *boxRect )
  239.         = {0x303c,0xfa,0xaaaa};
  240.  
  241. /** movie display clip */
  242. pascal RgnHandle GetMovieDisplayClipRgn( Movie m )
  243.         = {0x303c,0xfc,0xaaaa};
  244. pascal void SetMovieDisplayClipRgn( Movie m, RgnHandle theClip )
  245.         = {0x303c,0xfd,0xaaaa};
  246.  
  247. /** movie src clip */
  248. pascal RgnHandle GetMovieSrcClipRgn( Movie m )
  249.         = {0x303c,0x100,0xaaaa};
  250. pascal void SetMovieSrcClipRgn( Movie m, RgnHandle theClip )
  251.         = {0x303c,0x101,0xaaaa};
  252.  
  253. /** track src clip */
  254. pascal RgnHandle GetTrackSrcClipRgn( Track theTrack )
  255.         = {0x303c,0x102,0xaaaa};
  256. pascal void SetTrackSrcClipRgn( Track theTrack, RgnHandle theClip )
  257.         = {0x303c,0x103,0xaaaa};
  258.  
  259. /** bounds in display space (not clipped by display clip) */
  260. pascal RgnHandle GetMovieDisplayBoundsRgn( Movie m )
  261.         = {0x303c,0xfb,0xaaaa};
  262. pascal RgnHandle GetTrackMovieDisplayBoundsRgn( Track t )
  263.         = {0x303c,0x112,0xaaaa};
  264.  
  265. /** bounds in movie space */
  266. pascal RgnHandle GetMovieSrcBoundsRgn( Movie m )
  267.         = {0x303c,0xfe,0xaaaa};
  268. pascal RgnHandle GetTrackMovieSrcBoundsRgn( Track t )
  269.         = {0x303c,0xff,0xaaaa};
  270.  
  271. /** bounds in track space */
  272. pascal RgnHandle GetTrackSrcBoundsRgn( Track trackH )
  273.         = {0x303c,0x111,0xaaaa};
  274.  
  275. /** mattes - always in track space */
  276. pascal PixMapHandle GetTrackSrcMatte( Track theTrack )
  277.         = {0x303c,0x115,0xaaaa};
  278. pascal void SetTrackSrcMatte( Track theTrack, PixMapHandle theMatte)
  279.         = {0x303c,0x116,0xaaaa};
  280. pascal void DisposeMatte( PixMapHandle theMatte )
  281.         = {0x303c,0x14a,0xaaaa};
  282.  
  283. /*************************
  284. * calls for getting/saving movies
  285. **************************/
  286.  
  287. enum {
  288.     newMovieActive = 1<<0,
  289.     newMovieDontResolveDataRefs = 1<<1,
  290.     newMovieDontAskUnresolvedDataRefs = 1<<2,
  291.     newMovieDontAutoAlternates = 1<<3
  292.     };
  293.     
  294. pascal Movie NewMovie( long flags )
  295.         = {0x303c,0x187,0xaaaa};
  296.  
  297. pascal OSErr PutMovieIntoHandle( Movie m, Handle publicMovie )
  298.         = {0x303c,0x22,0xaaaa};
  299. pascal void DisposeMovie( Movie m )
  300.         = {0x303c,0x23,0xaaaa};
  301.  
  302. /*************************
  303. * Movie State Routines
  304. **************************/
  305.  
  306. pascal unsigned long GetMovieCreationTime( Movie m )
  307.         = {0x303c,0x26,0xaaaa};
  308. pascal unsigned long GetMovieModificationTime( Movie m )
  309.         = {0x303c,0x27,0xaaaa};
  310.  
  311. pascal TimeScale GetMovieTimeScale( Movie m )
  312.         = {0x303c,0x29,0xaaaa};
  313. pascal void SetMovieTimeScale( Movie m, TimeScale timeScale )
  314.         = {0x303c,0x2a,0xaaaa};
  315.  
  316. pascal TimeValue GetMovieDuration( Movie m )
  317.         = {0x303c,0x2b,0xaaaa};
  318.  
  319. pascal Fixed GetMovieRate( Movie m )
  320.         = {0x303c,0x2c,0xaaaa};
  321. pascal void SetMovieRate( Movie m, Fixed rate )
  322.         = {0x303c,0x2d,0xaaaa};
  323.  
  324. pascal Fixed GetMoviePreferredRate( Movie m )
  325.         = {0x303c,0xf3,0xaaaa};
  326. pascal void SetMoviePreferredRate( Movie m, Fixed rate )
  327.         = {0x303c,0xf4,0xaaaa};
  328.  
  329. pascal short GetMoviePreferredVolume( Movie m )
  330.         = {0x303c,0xf5,0xaaaa};
  331. pascal void  SetMoviePreferredVolume( Movie m, short volume )
  332.         = {0x303c,0xf6,0xaaaa};
  333.     
  334. pascal short GetMovieVolume( Movie m )
  335.         = {0x303c,0x2e,0xaaaa};
  336. pascal void  SetMovieVolume( Movie m, short volume )
  337.         = {0x303c,0x2f,0xaaaa};
  338.  
  339. pascal void GetMovieMatrix( Movie m, MatrixRecord *matrix )
  340.         = {0x303c,0x31,0xaaaa};
  341. pascal void SetMovieMatrix( Movie m, const MatrixRecord *matrix )
  342.         = {0x303c,0x32,0xaaaa};
  343.  
  344. pascal void GetMoviePreviewTime( Movie m, 
  345.     TimeValue *previewTime, TimeValue *previewDuration )
  346.         = {0x303c,0x33,0xaaaa};
  347. pascal void SetMoviePreviewTime( Movie m, 
  348.     TimeValue previewTime, TimeValue previewDuration )
  349.         = {0x303c,0x34,0xaaaa};
  350.  
  351. pascal TimeValue GetMoviePosterTime( Movie m )
  352.         = {0x303c,0x35,0xaaaa};
  353. pascal void SetMoviePosterTime( Movie m, TimeValue posterTime )
  354.         = {0x303c,0x36,0xaaaa};
  355.  
  356. pascal void GetMovieSelection( Movie m, 
  357.     TimeValue *selectionTime, TimeValue *selectionDuration )
  358.         = {0x303c,0x37,0xaaaa};
  359. pascal void SetMovieSelection( Movie m, 
  360.     TimeValue selectionTime, TimeValue selectionDuration )
  361.         = {0x303c,0x38,0xaaaa};
  362.  
  363. pascal void SetMovieActiveSegment(Movie m, TimeValue startTime, TimeValue duration)
  364.         = {0x303c,0x15c,0xaaaa};
  365. pascal void GetMovieActiveSegment(Movie m, TimeValue *startTime, TimeValue *duration)
  366.         = {0x303c,0x15d,0xaaaa};
  367.  
  368. pascal TimeValue GetMovieTime( Movie m, TimeRecord *currentTime )
  369.         = {0x303c,0x39,0xaaaa};
  370.  
  371. pascal void SetMovieTime( Movie m, const TimeRecord *newtime )
  372.         = {0x303c,0x3c,0xaaaa};
  373. pascal void SetMovieTimeValue( Movie m, TimeValue newtime )
  374.         = {0x303c,0x3d,0xaaaa};
  375.  
  376.  
  377. pascal UserData GetMovieUserData( Movie m )
  378.         = {0x303c,0x3e,0xaaaa};
  379.  
  380.  
  381. /*************************
  382. * Track/Media finding routines
  383. **************************/
  384.  
  385. pascal long GetMovieTrackCount( Movie m )
  386.         = {0x303c,0x3f,0xaaaa};
  387. pascal Track GetMovieTrack( Movie m, long trackID )
  388.         = {0x303c,0x40,0xaaaa};
  389.  
  390. pascal Track GetMovieIndTrack( Movie m, long index )
  391.         = {0x303c,0x117,0xaaaa};
  392.  
  393. pascal long GetTrackID( Track t )
  394.         = {0x303c,0x127,0xaaaa};
  395.  
  396. pascal Movie GetTrackMovie( Track t )
  397.         = {0x303c,0xd0,0xaaaa};
  398.  
  399. /*************************
  400. * Track creation routines
  401. **************************/
  402.  
  403. pascal Track NewMovieTrack( Movie m, Fixed width, Fixed height, short trackVolume)
  404.         = {0x303c,0x188,0xaaaa};
  405. pascal void DisposeMovieTrack( Track t )
  406.         = {0x303c,0x42,0xaaaa};
  407.  
  408. /*************************
  409. * Track State routines
  410. **************************/
  411.  
  412. pascal unsigned long GetTrackCreationTime( Track t )
  413.         = {0x303c,0x43,0xaaaa};
  414. pascal unsigned long GetTrackModificationTime( Track t )
  415.         = {0x303c,0x44,0xaaaa};
  416.  
  417.  
  418. pascal Boolean GetTrackEnabled( Track t )
  419.         = {0x303c,0x45,0xaaaa};
  420. pascal void SetTrackEnabled( Track t, Boolean isEnabled )
  421.         = {0x303c,0x46,0xaaaa};
  422.  
  423. enum {                        /* track usage bits */
  424.     trackUsageInMovie = 1<<1,
  425.     trackUsageInPreview = 1<<2,
  426.     trackUsageInPoster = 1<<3
  427.     };
  428.  
  429. pascal long GetTrackUsage( Track t )
  430.         = {0x303c,0x47,0xaaaa};
  431. pascal void SetTrackUsage( Track t, long usage )
  432.         = {0x303c,0x48,0xaaaa};
  433.  
  434. pascal TimeValue GetTrackDuration( Track t )
  435.         = {0x303c,0x4b,0xaaaa};
  436.  
  437. pascal TimeValue GetTrackOffset( Track t )
  438.         = {0x303c,0x4c,0xaaaa};
  439. pascal void SetTrackOffset( Track t, TimeValue movieOffsetTime )
  440.         = {0x303c,0x4d,0xaaaa};
  441.  
  442. pascal void GetTrackPriority( Track t, PriorityType *priority )
  443.         = {0x303c,0x4e,0xaaaa};
  444. pascal void SetTrackPriority( Track t, const PriorityType *priority )
  445.         = {0x303c,0x4f,0xaaaa};
  446.  
  447. pascal short GetTrackLayer( Track t )
  448.         = {0x303c,0x50,0xaaaa};
  449. pascal void SetTrackLayer( Track t, short layer )
  450.         = {0x303c,0x51,0xaaaa};
  451.  
  452. pascal Track GetTrackAlternate( Track t )
  453.         = {0x303c,0x52,0xaaaa};
  454. pascal void SetTrackAlternate( Track t, Track alternateT )
  455.         = {0x303c,0x53,0xaaaa};
  456.  
  457. pascal void SetAutoTrackAlternatesEnabled(Movie m, Boolean enable)
  458.         = {0x303c,0x15e,0xaaaa};
  459. pascal void SelectMovieAlternates(Movie m)
  460.         = {0x303c,0x15f,0xaaaa};
  461.  
  462. pascal short GetTrackVolume( Track t )
  463.         = {0x303c,0x54,0xaaaa};
  464. pascal void SetTrackVolume( Track t, short volume )
  465.         = {0x303c,0x55,0xaaaa};
  466.  
  467. pascal void GetTrackMatrix( Track t, MatrixRecord *matrix )
  468.         = {0x303c,0x56,0xaaaa};
  469. pascal void SetTrackMatrix( Track t, const MatrixRecord *matrix )
  470.         = {0x303c,0x57,0xaaaa};
  471.  
  472. pascal void GetTrackDimensions( Track t, Fixed *width, Fixed *height )
  473.         = {0x303c,0x5d,0xaaaa};
  474. pascal void SetTrackDimensions( Track t, Fixed width, Fixed height )
  475.         = {0x303c,0x5e,0xaaaa};
  476.  
  477. pascal UserData GetTrackUserData( Track t )
  478.         = {0x303c,0x5f,0xaaaa};
  479.  
  480.  
  481. /*************************
  482. * get Media routines
  483. **************************/
  484.  
  485. pascal Media NewTrackMedia( Track t, OSType mediaType, TimeScale timeScale, 
  486.         Handle dataRef, OSType blobType )
  487.         = {0x303c,0x18e,0xaaaa};
  488.  
  489. pascal void DisposeTrackMedia( Media m )
  490.         = {0x303c,0x61,0xaaaa};
  491.  
  492. pascal Media GetTrackMedia( Track t )
  493.         = {0x303c,0x62,0xaaaa};
  494. pascal Track GetMediaTrack( Media m )
  495.         = {0x303c,0xc5,0xaaaa};
  496.  
  497.  
  498.  
  499. /*************************
  500. * Media State routines
  501. **************************/
  502.  
  503. pascal unsigned long GetMediaCreationTime( Media m )
  504.         = {0x303c,0x66,0xaaaa};
  505. pascal unsigned long GetMediaModificationTime( Media m )
  506.         = {0x303c,0x67,0xaaaa};
  507.  
  508. pascal TimeScale GetMediaTimeScale( Media m )
  509.         = {0x303c,0x68,0xaaaa};
  510. pascal void SetMediaTimeScale( Media m, TimeScale timeScale )
  511.         = {0x303c,0x69,0xaaaa};
  512.  
  513. pascal TimeValue GetMediaDuration( Media m )
  514.         = {0x303c,0x6a,0xaaaa};
  515.  
  516. pascal short GetMediaLanguage( Media m )
  517.         = {0x303c,0x6b,0xaaaa};
  518. pascal void SetMediaLanguage( Media m, short language )
  519.         = {0x303c,0x6c,0xaaaa};
  520.  
  521. pascal short GetMediaQuality( Media m )
  522.         = {0x303c,0x6d,0xaaaa};
  523. pascal void SetMediaQuality( Media m, short quality )
  524.         = {0x303c,0x6e,0xaaaa};
  525.  
  526. pascal void GetMediaHandlerDescription( Media m, OSType *mediaType, Str255 creatorName, OSType *creatorManufacturer )
  527.         = {0x303c,0x6f,0xaaaa};
  528.  
  529. pascal UserData GetMediaUserData( Media m )
  530.         = {0x303c,0x70,0xaaaa};
  531.  
  532.  
  533. /*************************
  534. * Media Handler routines
  535. **************************/
  536.  
  537. pascal MediaHandler GetMediaHandler( Media m )
  538.         = {0x303c,0x71,0xaaaa};
  539.  
  540. pascal OSErr SetMediaHandler( Media m, MediaHandler mH )
  541.         = {0x303c,0x190,0xaaaa};
  542.  
  543.  
  544. /*************************
  545. * Media's Data routines
  546. **************************/
  547.  
  548. pascal OSErr BeginMediaEdits( Media m )
  549.         = {0x303c,0x72,0xaaaa};
  550. pascal OSErr EndMediaEdits( Media m )
  551.         = {0x303c,0x73,0xaaaa};
  552.  
  553. pascal void GetMediaDataHandlerDescription( Media m, short index, OSType *type, Str255 creatorName, OSType *creatorManufacturer )
  554.         = {0x303c,0x19e,0xaaaa};
  555.  
  556. pascal DataHandler GetMediaDataHandler( Media m, short index )
  557.         = {0x303c,0x19f,0xaaaa};
  558. pascal OSErr SetMediaDataHandler( Media m, short index, DataHandler dataHandler )
  559.         = {0x303c,0x1a0,0xaaaa};
  560.  
  561.  
  562. /*************************
  563. * Media Sample Table Routines
  564. **************************/
  565.  
  566. pascal long GetMediaSampleDescriptionCount( Media m )
  567.         = {0x303c,0x77,0xaaaa};
  568. pascal void GetMediaSampleDescription( Media m, long index, SampleDescriptionHandle descH )
  569.         = {0x303c,0x78,0xaaaa};
  570.  
  571. pascal long GetMediaSampleCount( Media m )
  572.         = {0x303c,0x79,0xaaaa};
  573.  
  574. pascal void SampleNumToMediaTime( Media m, long logicalSampleNum, 
  575.         TimeValue *sampleTime, TimeValue *sampleDuration )
  576.         = {0x303c,0x7a,0xaaaa};
  577.  
  578. pascal void MediaTimeToSampleNum( Media m, TimeValue time, 
  579.         long *sampleNum, TimeValue *sampleTime, TimeValue *sampleDuration )
  580.         = {0x303c,0x7b,0xaaaa};
  581.  
  582.  
  583. typedef enum {            /* Add/GetMediaSample flags */
  584.     sampleNotSync = 1        /* sample is not a sync sample (eg. is frame differenced */
  585.     };
  586.  
  587. pascal OSErr AddMediaSample( Media m, Handle dataIn, long inOffset, unsigned long size,
  588.     TimeValue durationPerSample,
  589.     SampleDescriptionHandle sampleDescriptionH, 
  590.     long numberOfSamples, short sampleFlags, TimeValue *sampleTime )
  591.         = {0x303c,0x7c,0xaaaa};
  592.  
  593. pascal OSErr AddMediaSampleReference( Media m, long dataOffset, unsigned long size,
  594.     TimeValue durationPerSample,
  595.     SampleDescriptionHandle sampleDescriptionH, 
  596.     long numberOfSamples, short sampleFlags, TimeValue *sampleTime )
  597.         = {0x303c,0x7d,0xaaaa}; 
  598.  
  599. pascal OSErr GetMediaSample( Media m, Handle dataOut, long maxSizeToGrow, long *size,
  600.     TimeValue time, TimeValue *sampleTime, TimeValue *durationPerSample,
  601.     SampleDescriptionHandle sampleDescriptionH, long *sampleDescriptionIndex,
  602.     long maxNumberOfSamples, long *numberOfSamples, short *sampleFlags )
  603.         = {0x303c,0x7e,0xaaaa};    
  604.  
  605. pascal OSErr GetMediaSampleReference( Media m, long *dataOffset, long *size, 
  606.     TimeValue time, TimeValue *sampleTime, TimeValue *durationPerSample,
  607.     SampleDescriptionHandle sampleDescriptionH, long *sampleDescriptionIndex, 
  608.     long maxNumberOfSamples, long *numberOfSamples, short *sampleFlags )
  609.         = {0x303c,0x7f,0xaaaa};    
  610.  
  611. pascal void SetPreferredMediaChunkSize( Media m, long minChunkSize, long maxChunkSize, long padSize )
  612.         = {0x303c,0x80,0xaaaa};
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619. /*************************
  620. * Editing Routines
  621. **************************/
  622.  
  623. /*pascal OSErr InsertTrackMedia( void *Use_InsertMediaIntoTrack_Instead );*/
  624.  
  625. pascal OSErr InsertMediaIntoTrack( Track trackH,
  626.             TimeValue trackStart, 
  627.             TimeValue mediaTime, TimeValue mediaDuration, 
  628.             Fixed mediaRate )
  629.         = {0x303c,0x183,0xaaaa};
  630.  
  631. pascal OSErr InsertTrackSegment( Track srcTrack, Track dstTrack,
  632.             TimeValue srcIn, TimeValue srcDuration, TimeValue dstIn )
  633.         = {0x303c,0x85,0xaaaa};
  634. pascal OSErr InsertMovieSegment( Movie srcMovie, Movie dstMovie,
  635.             TimeValue srcIn, TimeValue srcDuration, TimeValue dstIn )
  636.         = {0x303c,0x86,0xaaaa};
  637. pascal OSErr InsertEmptyTrackSegment( Track dstTrack,
  638.             TimeValue dstIn, TimeValue dstDuration )
  639.         = {0x303c,0x87,0xaaaa};
  640. pascal OSErr InsertEmptyMovieSegment( Movie dstMovie,
  641.             TimeValue dstIn, TimeValue dstDuration )
  642.         = {0x303c,0x88,0xaaaa};
  643. pascal OSErr DeleteTrackSegment( Track t, TimeValue in, TimeValue duration )
  644.         = {0x303c,0x89,0xaaaa};
  645. pascal OSErr DeleteMovieSegment( Movie m, TimeValue in, TimeValue duration )
  646.         = {0x303c,0x8a,0xaaaa};
  647. pascal OSErr ScaleTrackSegment( Track t, TimeValue in, 
  648.             TimeValue oldDuration, TimeValue newDuration )
  649.         = {0x303c,0x8b,0xaaaa};
  650. pascal OSErr ScaleMovieSegment( Movie m, TimeValue in,  
  651.             TimeValue oldDuration, TimeValue newDuration )
  652.         = {0x303c,0x8c,0xaaaa};
  653.  
  654.  
  655. /*************************
  656. * Hi-level Editing Routines
  657. **************************/
  658.  
  659. pascal Movie CutMovieSelection( Movie m )
  660.         = {0x303c,0x8d,0xaaaa};
  661. pascal Movie CopyMovieSelection( Movie m )
  662.         = {0x303c,0x8e,0xaaaa};
  663. pascal void PasteMovieSelection( Movie m, Movie src )
  664.         = {0x303c,0x8f,0xaaaa};
  665. pascal void AddMovieSelection( Movie m, Movie src )
  666.         = {0x303c,0x152,0xaaaa};
  667. pascal void ClearMovieSelection( Movie m )
  668.         = {0x303c,0xe1,0xaaaa};
  669.  
  670. /*************************
  671. * Middle-level Editing Routines
  672. **************************/
  673.  
  674. pascal OSErr CopyTrackSettings(Track srcTrack, Track dstTrack)
  675.         = {0x303c,0x153,0xaaaa};
  676. pascal OSErr CopyMovieSettings(Movie srcMovie, Movie dstMovie)
  677.         = {0x303c,0x154,0xaaaa};
  678.  
  679. /*************************
  680. * movie & track edit state routines
  681. **************************/
  682. pascal MovieEditState NewMovieEditState(Movie m)
  683.         = {0x303c,0x104,0xaaaa};
  684. pascal OSErr UseMovieEditState(Movie m, MovieEditState toState)
  685.         = {0x303c,0x105,0xaaaa};
  686. pascal OSErr DisposeMovieEditState(MovieEditState state)
  687.         = {0x303c,0x106,0xaaaa};
  688.  
  689. pascal TrackEditState NewTrackEditState(Track t)
  690.         = {0x303c,0x107,0xaaaa};
  691. pascal OSErr UseTrackEditState(Track t, TrackEditState state)
  692.         = {0x303c,0x108,0xaaaa};
  693. pascal OSErr DisposeTrackEditState(TrackEditState state)
  694.         = {0x303c,0x109,0xaaaa};
  695.  
  696. /*************************
  697. * Movie Timebase Conversion Routines
  698. **************************/
  699.  
  700. pascal TimeValue TrackTimeToMediaTime( TimeValue value, Track trackH )
  701.         = {0x303c,0x96,0xaaaa};
  702.  
  703.  
  704.  
  705. /*************************
  706. * Miscellaneous Routines
  707. **************************/
  708.  
  709.  
  710. pascal long GetMovieDataSize( Movie m, TimeValue startTime, TimeValue duration )
  711.         = {0x303c,0x98,0xaaaa};
  712. pascal long GetTrackDataSize( Track t, TimeValue startTime, TimeValue duration )
  713.         = {0x303c,0x149,0xaaaa};
  714. pascal long GetMediaDataSize( Media m, TimeValue startTime, TimeValue duration)
  715.         = {0x303c,0x99,0xaaaa};
  716.  
  717. pascal Boolean PtInMovie( Movie m, Point pt )
  718.         = {0x303c,0x9a,0xaaaa};
  719. pascal Boolean PtInTrack( Track t, Point pt )
  720.         = {0x303c,0x9b,0xaaaa};
  721.  
  722.  
  723. /*************************
  724. * Group Selection Routines
  725. **************************/
  726.  
  727.  
  728. pascal void SetMovieLanguage( Movie m, long language )
  729.         = {0x303c,0x9c,0xaaaa};
  730.  
  731.  
  732.  
  733.  
  734.  
  735. /*************************
  736. * User Data
  737. **************************/
  738.  
  739.  
  740. pascal OSErr GetUserData( UserData u, Handle data, long type, long index )
  741.         = {0x303c,0x9e,0xaaaa};
  742. pascal OSErr AddUserData( UserData u, Handle data, long type )
  743.         = {0x303c,0x9f,0xaaaa};
  744. pascal OSErr RemoveUserData( UserData u, long type, long index )
  745.         = {0x303c,0xa0,0xaaaa};
  746. pascal short CountUserDataType(UserData userDataH, long type)
  747.         = {0x303c,0x14b,0xaaaa};
  748.  
  749. pascal OSErr AddUserDataText(UserData u, Handle data, long type, long index,
  750.                 short itlRegionTag)
  751.         = {0x303c,0x14c,0xaaaa};
  752. pascal OSErr GetUserDataText(UserData u, Handle data, long type, long index,
  753.                 short itlRegionTag)
  754.         = {0x303c,0x14d,0xaaaa};
  755. pascal OSErr RemoveUserDataText(UserData u, long type, long index,
  756.                 short itlRegionTag)
  757.         = {0x303c,0x14e,0xaaaa};
  758.  
  759. #define    nextTimeMediaSample 1
  760. #define    nextTimeMediaEdit  2
  761. #define    nextTimeTrackEdit  4
  762. #define    nextTimeSyncSample  8
  763. #define    nextTimeMediaSyncSample 16
  764. #define    nextTimeMediaSampleEdgeOK 0x4000
  765. #define    nextTimeIgnoreActiveSegment 0x8000
  766.  
  767. pascal void GetMediaNextInterestingTime( Media m, short flags, TimeValue time, Fixed rate,
  768.         TimeValue *interestingTime, TimeValue *interestingDuration )
  769.         = {0x303c,0x16d,0xaaaa};
  770. pascal void GetTrackNextInterestingTime( Track t, short flags, TimeValue time, Fixed rate,
  771.         TimeValue *interestingTime, TimeValue *interestingDuration )
  772.         = {0x303c,0xe2,0xaaaa};
  773. pascal void GetMovieNextInterestingTime( Movie m, short flags, 
  774.         short numMediaTypes, const OSType *whichMediaTypes,
  775.         TimeValue time, Fixed rate,
  776.         TimeValue *interestingTime, TimeValue *interestingDuration )
  777.         = {0x303c,0x10e,0xaaaa};
  778.  
  779. /****************************************
  780. *                                        *
  781. *       H  I  G  H    L  E  V  E  L     *
  782. *                                        *
  783. ****************************************/
  784.  
  785. #define    createMovieFileDeleteCurFile 0x80000000
  786. #define    createMovieFileDontCreateMovie 0x40000000
  787. #define    createMovieFileDontOpenMovieFile 0x20000000
  788.  
  789. pascal OSErr CreateMovieFile( const FSSpec *fileSpec, OSType creator,
  790.             ScriptCode scriptTag, long flags, short *resRefNum, Movie *newmovie  )
  791.         = {0x303c,0x191,0xaaaa};
  792.  
  793. pascal OSErr OpenMovieFile( const FSSpec *fileSpec, short *resRefNum, char perms )
  794.         = {0x303c,0x192,0xaaaa};
  795.  
  796. pascal OSErr CloseMovieFile( short resRefNum )
  797.         = {0x303c,0xd5,0xaaaa};
  798.  
  799. pascal OSErr DeleteMovieFile( const FSSpec *fileSpec )
  800.         = {0x303c,0x175,0xaaaa};
  801.  
  802. enum {                        
  803.     movieInDataForkResID = -1        /* magic res ID */
  804.     };
  805.  
  806. pascal OSErr NewMovieFromFile( Movie *m, short resRefNum, short *resId, char *resName,
  807.              short flags, Boolean *dataRefWasChanged )
  808.         = {0x303c,0xf0,0xaaaa};
  809.  
  810. pascal OSErr NewMovieFromHandle( Movie *m, Handle publicMovie,
  811.              short flags, Boolean *dataRefWasChanged )
  812.         = {0x303c,0xf1,0xaaaa};
  813.  
  814. pascal OSErr AddMovieResource( Movie m, short resRefNum, short *resId, const char *resName )
  815.         = {0x303c,0xd7,0xaaaa};
  816.  
  817. pascal OSErr UpdateMovieResource( Movie m, short resRefNum, short resId, const char *resName )
  818.         = {0x303c,0xd8,0xaaaa};
  819.  
  820. pascal OSErr RemoveMovieResource( short resRefNum, short resId )
  821.         = {0x303c,0x176,0xaaaa};
  822.  
  823. pascal Boolean HasMovieChanged( Movie m )
  824.         = {0x303c,0xd9,0xaaaa};
  825. pascal void ClearMovieChanged( Movie m )
  826.         = {0x303c,0x113,0xaaaa};
  827.  
  828.  
  829. enum {
  830.     addMovieToDataFork = 1L<<0,
  831.     flattenActiveTracksOnly = 1L<<2,
  832.     dontInterleaveFlatten = 1L<<3
  833.     }; 
  834.  
  835. pascal void FlattenMovie(Movie m, long flattenFlags, 
  836.             const FSSpec *theFile, OSType creator, ScriptCode scriptTag,
  837.             long creationFlags, short *resId, const char *resName)
  838.         = {0x303c,0x19b,0xaaaa};
  839.  
  840. pascal Movie FlattenMovieData(Movie m, long flattenFlags, 
  841.             const FSSpec *theFile, OSType creator, ScriptCode scriptTag,
  842.             long creationFlags)
  843.         = {0x303c,0x19c,0xaaaa};
  844.  
  845. pascal void SetMovieProgressProc(Movie m, MovieProgressProcPtr p, long refcon)
  846.         = {0x303c,0x19a,0xaaaa};
  847.  
  848. /*************************
  849. * Video Media routines
  850. **************************/
  851. pascal HandlerError GetVideoMediaGraphicsMode( MediaHandler mh,
  852.                         long *graphicsMode, RGBColor *opColor )
  853.                                 = {0x2f3c,8,257,0x7000,0xa82a};
  854. pascal HandlerError SetVideoMediaGraphicsMode( MediaHandler mh,
  855.                         long graphicsMode, const RGBColor *opColor )
  856.                                 = {0x2f3c,8,258,0x7000,0xa82a};
  857.  
  858. /*************************
  859. * Sound Media routines
  860. **************************/
  861.  
  862. pascal HandlerError GetSoundMediaBalance( MediaHandler mh,
  863.                         short *balance )
  864.                                 = {0x2f3c,4,257,0x7000,0xa82a};
  865. pascal HandlerError SetSoundMediaBalance( MediaHandler mh,
  866.                          short balance )
  867.                                 = {0x2f3c,2,258,0x7000,0xa82a};
  868.  
  869.  
  870. /*************************
  871. **************************
  872. * new routines
  873. **************************
  874. **************************/
  875.  
  876. pascal void GetPosterBox( Movie m, Rect *boxRect )
  877.         = {0x303c,0x16f,0xaaaa};
  878. pascal void SetPosterBox( Movie m, const Rect *boxRect )
  879.         = {0x303c,0x170,0xaaaa};
  880. pascal RgnHandle GetMovieSegmentDisplayBoundsRgn( Movie m, TimeValue time, TimeValue duration )
  881.         = {0x303c,0x16c,0xaaaa};
  882. pascal RgnHandle GetTrackSegmentMovieDisplayBoundsRgn( Track t, TimeValue time, TimeValue duration )
  883.         = {0x303c,0x16b,0xaaaa};
  884.  
  885. #if THINK_C==1
  886.     #define MovieRgnCoverProc ProcPtr
  887. #else
  888.     typedef pascal OSErr (*MovieRgnCoverProc)(Movie m, RgnHandle changedRgn, long refcon);        
  889. #endif
  890.  
  891. pascal void SetMovieCoverProcs(Movie m, MovieRgnCoverProc uncoverProc, MovieRgnCoverProc coverProc, long refcon)
  892.         = {0x303c,0x179,0xaaaa};
  893.  
  894. pascal ComponentResult GetTrackStatus(Track t)
  895.         = {0x303c,0x172,0xaaaa};
  896. pascal ComponentResult GetMovieStatus(Movie m, Track *firstProblemTrack)
  897.         = {0x303c,0x173,0xaaaa};
  898.  
  899. /****
  900.     Hammer routines
  901. ****/
  902.  
  903. enum {
  904.     mcTopLeftMovie = 1<<0,        /* usually centered */
  905.     mcScaleMovieToFit = 1<<1,    /* usually only scales down */
  906.     mcWithBadge = 1<<2,            /* give me a badge */
  907.     mcNotVisible = 1<<3,        /* don't show controller */
  908.     mcWithFrame = 1<<4            /* gimme a frame */
  909. };
  910. pascal ComponentInstance MCNewMovieController(Movie m, Rect *movieRect, long someFlags)
  911.         = {0x303c,0x18a,0xaaaa};
  912. pascal void MCDisposeMovieController(ComponentInstance mc)
  913.         = {0x303c,0x18b,0xaaaa};
  914.  
  915. /*****
  916.     Scrap routines
  917. *****/
  918.  
  919. enum {
  920.     movieScrapDontZeroScrap = 1<<0,
  921.     movieScrapOnlyPutMovie = 1<<1
  922. };
  923. pascal OSErr PutMovieOnScrap(Movie m, long someMoreFlags)
  924.         = {0x303c,0x18c,0xaaaa};
  925. pascal Movie NewMovieFromScrap(long newMovieFlags)
  926.         = {0x303c,0x18d,0xaaaa};
  927.  
  928.  
  929. /*****
  930.     DataRef routines
  931. *****/
  932.  
  933. typedef enum {
  934.     blobSelfReference    = 1<<0,
  935.     blobWasNotResolved    = 1<<1
  936.     } blobAttributeEnum;
  937.     
  938.  
  939.  
  940. pascal OSErr GetMediaDataRef( Media media, short index, Handle *blob, OSType *blobType, long *attributes )
  941.         = {0x303c,0x197,0xaaaa};
  942. pascal OSErr AddMediaDataRef( Media media, short *index, Handle blob, OSType blobType )
  943.         = {0x303c,0x198,0xaaaa};
  944.  
  945. pascal OSErr GetMediaDataRefCount( Media media, short *count )
  946.         = {0x303c,0x199,0xaaaa};
  947.  
  948. /*****
  949.     Playback hint routines
  950. *****/
  951.  
  952. typedef enum {
  953.     hintsScrubMode    = 1<<0        /* mask == && (if flags == scrub on, flags != scrub off) */ 
  954.     } playHintsEnum;
  955.  
  956. pascal void SetMoviePlayHints( Movie movie, long flags, long flagsMask )
  957.         = {0x303c,0x1a1,0xaaaa};
  958. pascal void SetMediaPlayHints( Media media, long flags, long flagsMask )
  959.         = {0x303c,0x1a2,0xaaaa};
  960.  
  961. #ifdef __cplusplus
  962. }
  963. #endif __cplusplus
  964.  
  965. #endif _Movies_
  966.  
  967.